/**
 * @Author: jichang
 * @Date: 2024/10/28 14:40:15
 * @LastEditors: jichang
 * @LastEditTime: 2024/10/28 14:40:15
 * Description: 
 * 对已推送到队列中的消息进行包装
 * 对sender实例的拷贝只是拷贝了指向队列的指针而非队列本身
 */
#pragma once
#include "simple_msg_queue.hpp"
namespace messaging
{
    class sender {
    public:
        // 默认无队列
        sender(): q(nullptr) { }
        // 从指向队列的指针进行构造
        explicit sender(queue* q_): q(q_) { }

        template<typename Msg>
        void send(Msg const& msg) {
            if (q) {
                q->push(msg); // 将消息发送到队列
            }
        }
    private:
        queue* q;
    };
};
